package coop.bancocredicoop.proyectos.gd.rbac;

import java.util.Set;

import javax.servlet.http.HttpSession;

import com.entrepids.psec.security.client.services.UserContext;
import com.entrepids.psec.security.client.services.UserContextManager;

import coop.bancocredicoop.proyectos.gd.Usuario;

public class RBACReal implements RBAC {

	String userName;
	UserContext userContext;

	public RBACReal(HttpSession session, String userName) throws Exception {
		this.userName = userName;
		this.userContext = UserContextManager.getInstance().getUserContext(userName, "GDOC");
	}

	public Usuario getUsuario() {
		return new Usuario(userName, userContext.getUserTO().getDsFirstName(), userContext.getUserTO().getDsLastName());
	}

	public boolean tienePermiso(String nombrePermiso) throws Exception {
		PermisoRBAC permisoRBAC = null;

		for (PermisoRBAC permisoRBAC1 : CollectionPermisoRBAC.getCollection()) {
			if (permisoRBAC1.getNombre().equals(nombrePermiso)) {
				permisoRBAC = permisoRBAC1;
				break;
			}
		}

		if (permisoRBAC == null)
			return false;

		return userContext.canPerform(permisoRBAC.getOpcion(), permisoRBAC.getAccion());
	}

	public Set<String> getRolesAlfrescoHabilitados() throws Exception {
		return CollectionPermisoRBAC.getRolesAlfrescoHabilitados(this);
	}

	public Set<String> getRolesAlfrescoDeshabilitados() throws Exception {
		return CollectionPermisoRBAC.getRolesAlfrescoDeshabilitados(this);
	}

}
